In image processing circuits, such as a graphics processing unit, logic and algorithms are typically included to perform texturing of image data to be displayed. More specifically, image filtering, which is performed in the texturing process such as in a texture pipeline, is performed following many different techniques. As examples, known filtering techniques include percentage closer filtering or any similar high order filtering that composes multiple samples of image data together. For example, in bilinear filtering, conventional texture fetching pipelines sample up to four neighboring points for filtering. These samples are then blended together by using weights calculated from the sub-texel position of the sample point within a particular texel box, which is one of the four samples. Further, each of the samples comprises a vector having up to four channels designated typically as R, G, B, and A where R stands for red, G stands for green, B stands for blue, and A denotes alpha, which is typically a transparency value. The result of the filtering is a single vector having up to four channels where the single vector is a blend of the original four vectors (i.e., samples).
There are instances where values of the four samples may be desirable to be used without bilinear filtering in order that custom operations may be performed within a shader in the texture pipeline. Example instances include Percentage Closer Filtering, which compares one channel of the sample with a provided distance and replaces it with a 0.0 or 1.0 value before performing the filtering, and higher order filters, which may require multiple fetches and changing of the blend weights before filtering. Conventional algorithms and accompanying logic typically obtain such values by performing four separate fetches for each of the samples being filtered. Four fetches comes from the fact that there are four components in a vector. There are four neighbors in a two dimensional surface. Filter algorithms usually use four samples, but many use a larger neighborhood, and in those cases several fetch four operations can be used to create the filter at four times the fetch speed compared to doing them individually. In any event, by performing four fetches per vector, the time needed to retrieve that sample data increased.